package question;

import org.junit.Test;

/**
 * 同来查看switch关键字
 *
 * Created by yangliwei on 2017/11/12.
 */
public class SwitchDemo {
    /**
     * switch 能否使用String做参数 1.7之后开始支持
     * 使用String做switch参数原理 https://freish.iteye.com/blog/1152921  实际上调用了String的hashcode方法
     */
    @Test
    public void test01(){
        String str = "abc";
        switch (str){
            case "abc":
                System.out.println("I'm abc");break;
            case "123":
                System.out.println("I'm 123");break;
            default:
                System.out.println("end");
        }
    }


    /**
     * @Description 当使用String作为switch参数时，先调用String的hashcode方法，所以会抛出NPE
     * @Output throw NullPointerException
     */
    @Test
    public  void test02() {
        String param = null;
        switch (param) {
            case "null":
                System.out.println("null");
                break;
            default:
                System.out.println("default");
        }
    }

}
